﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Data.SqlClient;
using System.Data;
using System.Data.SqlClient;


/// <summary>
/// Summary description for ActivoFijosBLL
/// </summary>
public class ActivoFijosBLL
{
    
	public ActivoFijosBLL()
	{
		//
		// TODO: Add constructor logic here
		//
	}

    public static ActivoFijos rowToDto(dsActivoFijos.ActivoFijosDSRow ActivoFijosRow)
    {

        ActivoFijos objActivoFijos = new ActivoFijos();
        objActivoFijos.IActivoFijo_id = ActivoFijosRow.iActivoFijo_id;
        objActivoFijos.SCodigoActivoFijo = ActivoFijosRow.sCodigoActivoFijo;
        objActivoFijos.IValorOriginalCompra = ActivoFijosRow.iValorOriginalCompra;
        objActivoFijos.IValorActualizado = ActivoFijosRow.iValorActualizado;
        objActivoFijos.IValorNeto = ActivoFijosRow.iValorNeto;
        objActivoFijos.IUltimaDepreciacion = ActivoFijosRow.iUltimaDepreciacion;
        objActivoFijos.IDepreciacionAcumulada = ActivoFijosRow.iDepreciacionAcumulada;
        objActivoFijos.ITipoActivo_id = ActivoFijosRow.iTipoActivo_id;
        objActivoFijos.ENcargado = ActivoFijosRow.Encargado;
        objActivoFijos.ICreadoPor = ActivoFijosRow.iCreadoPor;
        objActivoFijos.IModificadoPor = ActivoFijosRow.iModificadoPor;
        objActivoFijos.DtFecha_ingreso = ActivoFijosRow.dtFecha_ingreso;
        objActivoFijos.DtFecha_UltimaDepreciacion = ActivoFijosRow.dtFecha_UltimaDepreciacion;
        objActivoFijos.IEstadoActivo_fl = ActivoFijosRow.iEstadoActivo_fl;
        objActivoFijos.SLocalizacionActual = ActivoFijosRow.sLocalizacionActual;
        objActivoFijos.SDescripcionActivo = ActivoFijosRow.sDescripcionActivo;
        return objActivoFijos;
    }
    public static List<ActivoFijos> GetAll()
    {
        List<ActivoFijos> ListaDeActivoFijos = new List<ActivoFijos>();
        try
        {



            dsActivoFijosTableAdapters.ActivoFijosDSTableAdapter ActivoFijosAdapter
                = new dsActivoFijosTableAdapters.ActivoFijosDSTableAdapter();
            dsActivoFijos.ActivoFijosDSDataTable ActivoFijosDataTable = ActivoFijosAdapter.GetAll_ActivoFijos();

            foreach (dsActivoFijos.ActivoFijosDSRow row in ActivoFijosDataTable)
            {
                ActivoFijos objActivoFijos = rowToDto(row);
                ListaDeActivoFijos.Add(objActivoFijos);
            }
        }
        catch (Exception ex)
        {

            //Manejar Excepcion
        }
        return ListaDeActivoFijos;
    }
    public static ActivoFijos GetByPK(int pk)
    {

        try
        {

            dsActivoFijosTableAdapters.ActivoFijosDSTableAdapter ActivoFijosAdapter
                = new dsActivoFijosTableAdapters.ActivoFijosDSTableAdapter();
            dsActivoFijos.ActivoFijosDSDataTable ActivoFijosDataTable
                = ActivoFijosAdapter.GetByPk_ActivoFijos(pk);

            ActivoFijos objActivoFijos = rowToDto(ActivoFijosDataTable[0]);
            return objActivoFijos;
        }
        catch (Exception ex)
        {

            //Manejar Excepcion
        }
        return null;
    }

    public static int InsertarActivoFijos(string sCodigoActivoFijo,decimal iValorOriginalCompra, decimal iValorActualizado, decimal iValorNeto, decimal iUltimaDepreciacion, decimal iDepreciacionAcumulada, int iTipoActivo_id, int Encargado, int iCreadoPor, int iModificadoPor, DateTime dtFecha_ingreso, DateTime dtFecha_UltimaDepreciacion, Boolean iEstadoActivo_fl, string sLocalizacionActual, string sDescripcion)
    {

        try
        {

            dsActivoFijosTableAdapters.ActivoFijosDSTableAdapter ActivoFijosAdapter
                = new dsActivoFijosTableAdapters.ActivoFijosDSTableAdapter();


            int? nuevaPK = 0;

            ActivoFijosAdapter.Insertar_ActivoFijos(sCodigoActivoFijo,iValorOriginalCompra,iValorActualizado,iValorNeto,iUltimaDepreciacion,iDepreciacionAcumulada,iTipoActivo_id,Encargado,iCreadoPor,iModificadoPor,dtFecha_ingreso,dtFecha_UltimaDepreciacion,iEstadoActivo_fl,sLocalizacionActual,sDescripcion, ref nuevaPK);

            return (int)nuevaPK;
        }
        catch (Exception ex)
        {

            //Manejar Excepcion
        }
        return 0;
    }

    public static bool ModificarActivoFijos(int pk, string sCodigoActivoFijo, decimal iValorOriginalCompra, decimal iValorActualizado, decimal iValorNeto, decimal iUltimaDepreciacion, decimal iDepreciacionAcumulada, int iTipoActivo_id, int Encargado, int iCreadoPor, int iModificadoPor, DateTime dtFecha_ingreso, DateTime dtFecha_UltimaDepreciacion, Boolean iEstadoActivo_fl, string sLocalizacionActual, string sDescripcion)
    {

        try
        {

            dsActivoFijosTableAdapters.ActivoFijosDSTableAdapter ActivoFijosAdapter
                = new dsActivoFijosTableAdapters.ActivoFijosDSTableAdapter();

            ActivoFijosAdapter.Modificar_ActivoFijos(pk, sCodigoActivoFijo, iValorOriginalCompra, iValorActualizado, iValorNeto, iUltimaDepreciacion, iDepreciacionAcumulada, iTipoActivo_id, Encargado, iCreadoPor, iModificadoPor, dtFecha_ingreso, dtFecha_UltimaDepreciacion, iEstadoActivo_fl, sLocalizacionActual, sDescripcion);


            return true;
        }
        catch (Exception ex)
        {

            //Manejar Excepcion
        }
        return false;
    }

    public static bool EliminarActivoFijos(int pk)
    {

        try
        {

            dsActivoFijosTableAdapters.ActivoFijosDSTableAdapter ActivoFijosAdapter
                = new dsActivoFijosTableAdapters.ActivoFijosDSTableAdapter();

            ActivoFijosAdapter.Eliminar_ActivoFijos(pk);


            return true;
        }
        catch (Exception ex)
        {

            //Manejar Excepcion
        }
        return false;
    }


    public String generadorCodigo(ActivoFijos af)
    {
        TipoActivosFijos taf = TipoActivosFijosBLL.GetByPK(af.ITipoActivo_id);

        String cod = taf.SCodigoActivo;
        dsActivoFijosTableAdapters.ActivoFijosDSTableAdapter ActivoFijosAdapter
                = new dsActivoFijosTableAdapters.ActivoFijosDSTableAdapter();
        Object ActivoFijosDataTable
                = ActivoFijosAdapter.CantidadTipoActivos_ActivosFijos(af.ITipoActivo_id);

        int x = Convert.ToInt32(ActivoFijosDataTable);
        x = x + 1;
        if (x < 10)
        {
            cod = cod + "0000" + x;
        }
        else if (x < 100)
        {
            cod = cod + "000" + x;
        }
        else if (x < 1000)
        {
            cod = cod + "00" + x;
        }
        else if (x < 10000)
        {
            cod = cod + "0" + x;
        }
        else
        {
            cod = cod + x;
        }
        return cod;
    }


  


}